]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
inputMethod: Use update-preedit-with-mode signal
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 27 Jul 2021 14:52:32 +0000 (16:52 +0200)
committerMarge Bot <marge-bot@gnome.org>
Fri, 3 Sep 2021 22:32:36 +0000 (22:32 +0000)
This signal announces the preferred commit mode of the preedit text when
the input context is reset. Keep this mode around, and ensure to honor this
mode (e.g. maybe commit the preedit string) whenever the input method would
be reset.

This is delegated to the internal layers, so propagate this mode via
clutter_input_method_set_preedit_text().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1929>

js/misc/inputMethod.js
meson.build

index 0bc1462ef12bc321db3babfd3f1a7479816fcaf6..25b02e35b89c909c0c31f6c6f50d18e71d63b9da 100644 (file)
@@ -62,9 +62,10 @@ class InputMethod extends Clutter.InputMethod {
             return;
         }
 
+        this._context.set_client_commit_preedit(true);
         this._context.connect('commit-text', this._onCommitText.bind(this));
         this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
-        this._context.connect('update-preedit-text', this._onUpdatePreeditText.bind(this));
+        this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this));
         this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this));
         this._context.connect('hide-preedit-text', this._onHidePreeditText.bind(this));
         this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this));
@@ -105,29 +106,30 @@ class InputMethod extends Clutter.InputMethod {
         }
     }
 
-    _onUpdatePreeditText(_context, text, pos, visible) {
+    _onUpdatePreeditText(_context, text, pos, visible, mode) {
         if (text == null)
             return;
 
         let preedit = text.get_text();
 
         if (visible)
-            this.set_preedit_text(preedit, pos);
+            this.set_preedit_text(preedit, pos, mode);
         else if (this._preeditVisible)
-            this.set_preedit_text(null, pos);
+            this.set_preedit_text(null, pos, mode);
 
         this._preeditStr = preedit;
         this._preeditPos = pos;
         this._preeditVisible = visible;
+        this._preeditCommitMode = mode;
     }
 
     _onShowPreeditText() {
         this._preeditVisible = true;
-        this.set_preedit_text(this._preeditStr, this._preeditPos);
+        this.set_preedit_text(this._preeditStr, this._preeditPos, this._preeditCommitMode);
     }
 
     _onHidePreeditText() {
-        this.set_preedit_text(null, this._preeditPos);
+        this.set_preedit_text(null, this._preeditPos, this._preeditCommitMode);
         this._preeditVisible = false;
     }
 
@@ -165,7 +167,7 @@ class InputMethod extends Clutter.InputMethod {
 
         if (this._preeditStr) {
             // Unset any preedit text
-            this.set_preedit_text(null, 0);
+            this.set_preedit_text(null, 0, this._preeditCommitMode);
             this._preeditStr = null;
         }
 
@@ -177,16 +179,16 @@ class InputMethod extends Clutter.InputMethod {
     }
 
     vfunc_reset() {
+        if (this._preeditStr !== null) {
+            // Unset any preedit text
+            this.set_preedit_text(null, 0, Clutter.PreeditResetMode.CLEAR);
+            this._preeditStr = null;
+        }
+
         if (this._context) {
             this._context.reset();
             this._emitRequestSurrounding();
         }
-
-        if (this._preeditStr) {
-            // Unset any preedit text
-            this.set_preedit_text(null, 0);
-            this._preeditStr = null;
-        }
     }
 
     vfunc_set_cursor_location(rect) {
index 41f5b02a34cc1754968f79b23a1d189775c28fe5..5c891a504fc5e2fad6c1439b078e08eb740dce9e 100644 (file)
@@ -30,7 +30,7 @@ mutter_req = '>= 41.beta'
 polkit_req = '>= 0.100'
 schemas_req = '>= 41.alpha'
 startup_req = '>= 0.11'
-ibus_req = '>= 1.5.2'
+ibus_req = '>= 1.5.19'
 gnome_desktop_req = '>= 3.35.90'
 
 bt_req = '>= 3.9.0'